package com.example.hxds.odr.service;

import com.example.hxds.common.util.PageUtils;
import com.example.hxds.odr.db.pojo.OrderBillEntity;
import com.example.hxds.odr.db.pojo.OrderEntity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface OrderService {
    public HashMap searchDriverTodayBusinessData(long driverId);

    //查询好评差评
    public HashMap searchDriverMonthByPositiveAndNegativeReviews(long driverId);

    //查询当月订单金额、订单数。
    public HashMap searchDriverYearBusinessMonth(long driverId);

    //月订单分账,代扣个税
    public List<HashMap> searchDriverYearByMonthlyOrderSplittingPersonalIncomeTax(long driverId);

    //创建订单 和 订单账单
    public String insertOrder(OrderEntity orderEntity, OrderBillEntity billEntity);

    public String acceptNewOrder(long driverId, long orderId);

    public HashMap searchDriverExecuteOrder(Map param);

    public Integer searchOrderStatus(Map param);

    public String deleteUnAcceptOrder(Map param);

    public HashMap searchDriverCurrentOrder(long driverId);

    public HashMap hasCustomerCurrentOrder(long customerId);

    public HashMap searchOrderForMoveById(Map param);

    public int arriveStartPlace(Map param);

    //乘客确认实际已经到达
    public boolean confirArriveStartPlace(long orderId);

    //司机点击开始代驾
    public int startDriving(Map param);

    //修改订单状态为停止代驾
    public int updateOrderStatus(Map param);

    //根据条件查询
    public PageUtils searchOrderByPage(Map param);

    //查询订单详情
    public HashMap searchOrderContent(long orderId);

    //查询最近30天代驾上车点的坐标
    public ArrayList<HashMap> searchOrderStartLocationIn30Days();

    //根据订单id 和司机ID 查询 订单是否存在
    public boolean validDriverOwnOrder(Map param);

    //根据订单iD 查询 订单开始的时间结束的时间
    public HashMap searchSettlementNeedData(long orderId);

    //根据订单Id 查询订单信息
    public HashMap searchOrderById(Map param);

    public HashMap validCanPayOrder(Map param);

    public int updateOrderPrepayId(Map param);

    public Map<String, String> queryPayStatus(Long orderId);

    public void handlePayment(String uuid, String payId, String driverOpenId, String payTime);

    public String updateOrderAboutPayment(Map param);
    
    public PageUtils searchDriverOrderByPage(Map param);
    
    public PageUtils searchCustomerOrderByPage(Map param);
}
